﻿using System.Collections.Generic;
using CTS.Data.Domain.Dao;

namespace CTS.Data.APMenus.Domain.Dao
{
    /// <summary>
    /// MenuComDao
    /// </summary>
    public class MenuComDao : GenericDao<EntitiesDataContext>
    {
        // Định nghĩa hằng file sql
        public const string MENUCOMDAO_GETLIST_SQL = "MenuComDao_GetList.sql";

        /// <summary>
        /// Kiểm tra tồn tại menu
        /// </summary>
        public bool IsExist(string localeCd, string appCd, string menuCd, bool ignoreDeleteFlag)
        {
            // Tạo danh sách khóa chính
            var keys = new string[] { localeCd, appCd, menuCd };
            // Kết quả trả về
            return IsExist<APMenu>(keys, ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy thông tin menu
        /// </summary>
        public APMenu GetInfo(string localeCd, string appCd, string menuCd, bool ignoreDeleteFlag)
        {
            // Tạo danh sách khóa chính
            var keys = new string[] { localeCd, appCd, menuCd };
            // Kết quả trả về
            return GetSingle<APMenu>(keys, ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy danh sách menu
        /// </summary>
        public IList<APMenu> GetList(bool ignoreDeleteFlag)
        {
            // Kết quả trả về
            return GetList<APMenu>(ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy danh sách menu
        /// </summary>
        public IList<APMenu> GetList(string localeCd, bool ignoreDeleteFlag)
        {
            // Kết quả trả về
            return GetList<APMenu>(localeCd, ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy danh sách menu
        /// </summary>
        public IList<APMenu> GetList(string localeCd, string appCd, bool ignoreDeleteFlag)
        {
            // Tạo tham số
            var param = new {
                LocaleCd = localeCd,
                AppCd = appCd,
                IgnoreDeleteFlag = ignoreDeleteFlag
            };
            // Kết quả trả về
            return GetListByFile<APMenu>(MENUCOMDAO_GETLIST_SQL, param);
        }
    }
}
